/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package be.cultuurschuur.Controllers;

import be.cultuurschuur.entity.*;
import be.cultuurschuur.interfaces.*;
import be.cultuurschuur.services.*;
import java.io.*;
import java.util.*;
import javax.enterprise.context.*;
import javax.faces.context.FacesContext;
import javax.inject.*;

/**
 *
 * @author Webbie
 */
@Named
@RequestScoped
public class KlantController implements Serializable
{
    @Inject
    private KlantInterface klantInterface;
    private String achternaam;
    private String voornaam;
    private String email;
    private String paswoord;
    private String straat;
    private String error;
    private Boolean ingelogd;
    private Boolean admin;
    private int gemeente;

    public Boolean getAdmin()
    {
        FacesContext context = FacesContext.getCurrentInstance();
        Klant klant = new Klant();
        
        if(context != null)
        {
            Map<String, Object> sessionMap = context.getExternalContext().getSessionMap();
            
            if(sessionMap != null)
            {
               klant =  (Klant) sessionMap.get("klant");
            }
        }
        
        if(klant == null)
        {
            admin = false;
        }
        else
        {
            if(klant.getEmail().equalsIgnoreCase("admin"))
            {
                admin = true;
            }
            else
            {
                admin = false;
            }
        }
        
        return admin;
    }

    public void setAdmin(Boolean admin) {
        this.admin = admin;
    }

    public Boolean getIngelogd() {
        FacesContext context = FacesContext.getCurrentInstance();
        Klant klant = new Klant();
        
        if(context != null)
        {
            Map<String, Object> sessionMap = context.getExternalContext().getSessionMap();
            
            if(sessionMap != null)
            {
               klant =  (Klant) sessionMap.get("klant");
            }
        }
        
        if(klant == null) {
            ingelogd = false;
        }
        else {
            ingelogd = true;
            
        }
        
        return ingelogd;
    }

    public void setIngelogd(Boolean ingelogd) {
        this.ingelogd = ingelogd;
    }
    
    public String uitloggen() {
        FacesContext context = FacesContext.getCurrentInstance();
        
        if(context != null) {
            Map<String, Object> sessionMap = context.getExternalContext().getSessionMap();
            
            if(sessionMap != null) {
               sessionMap.remove("klant");
            }
        }
        
        return "index.xhtml";
    }
    
    public String getError() {
        return error;
    }

    public void setError(String error) {
        this.error = error;
    }

    public String getPaswoord() {
        return paswoord;
    }

    public void setPaswoord(String paswoord) {
        this.paswoord = paswoord;
    }
    
    public String getAchternaam() {
        return achternaam;
    }

    public void setAchternaam(String achternaam) {
        this.achternaam = achternaam;
    }

    public String getVoornaam() {
        return voornaam;
    }

    public void setVoornaam(String voornaam) {
        this.voornaam = voornaam;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getStraat() {
        return straat;
    }

    public void setStraat(String straat) {
        this.straat = straat;
    }

    public int getGemeente() {
        return gemeente;
    }

    public void setGemeente(int gemeente)
    {
        this.gemeente = gemeente;
    }

    public Klant insertKlant()
    { 
        BLKlant blKlant = new BLKlant();
        blKlant.setAchternaam(achternaam);
        blKlant.setEmail(email);
        blKlant.setPaswoord(paswoord);
        blKlant.setGemeente(gemeente);
        blKlant.setStraat(straat);
        blKlant.setVoornaam(voornaam);
        return blKlant.insertKlant();
        
    }
    
    public List<Klant> getKlanten()
    {
        BLKlant blKlant = new BLKlant();
        return blKlant.getKlanten();
    }
    
    public String registreren()
    {
        if(insertKlant() == null)
        {
            //emailadres al in gebruik, aanmaken nieuwe registratie mislukt
            error = "Deze email is al in gebruik.";
            return "registratie.xhtml";
        }
        else
        {
            return "index.xhtml";
        }
    }
    
    public String inloggen()
    {
        FacesContext context = FacesContext.getCurrentInstance();
        BLKlant blKlant = new BLKlant();
        
        Klant inlog = blKlant.getKlantByEmailAndPas(email, paswoord);
        
        if(inlog == null)
        {
            //inloggen mislukt
            error = "Verkeerde email en/of paswoord";
            return "login.xhtml";
        }
        else
        {
            context.getExternalContext().getSessionMap().put("klant", inlog);
            return "index.xhtml";
        }
    }
}
